home *** CD-ROM | disk | FTP | other *** search
/ PCNet 1998 May / PCnet Mayıs 1998.iso / Multimed / Program / A_Trial.exe / data.z / JObList.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-12-04  |  2.2 KB  |  175 lines

  1. public class JObList {
  2.    private Node m_head;
  3.    private Node m_tail;
  4.    private int m_nCount;
  5.  
  6.    public Position GetHeadPosition() {
  7.       return this.m_head == null ? null : new Position(this.m_head);
  8.    }
  9.  
  10.    public Object GetAt(Position var1) {
  11.       return var1.element == null ? null : ((Node)var1.element).data;
  12.    }
  13.  
  14.    public Object GetTail() {
  15.       return this.m_tail == null ? null : this.m_tail.data;
  16.    }
  17.  
  18.    public void AddTail(Object var1) {
  19.       Node var2 = new Node(var1);
  20.       if (this.m_tail == null) {
  21.          var2.next = var2.prev = null;
  22.          this.m_head = this.m_tail = var2;
  23.       } else {
  24.          var2.prev = this.m_tail;
  25.          var2.next = null;
  26.          this.m_tail.next = var2;
  27.          this.m_tail = var2;
  28.       }
  29.  
  30.       ++this.m_nCount;
  31.    }
  32.  
  33.    public Object RemoveAt(Position var1) {
  34.       Node var2 = (Node)var1.element;
  35.       var1.element = null;
  36.       if (var2 == null) {
  37.          return null;
  38.       } else {
  39.          Object var3 = var2.data;
  40.          if (this.m_nCount == 1) {
  41.             this.m_head = this.m_tail = null;
  42.          } else if (var2 == this.m_tail) {
  43.             this.m_tail = var2.prev;
  44.             var2.prev.next = null;
  45.          } else if (var2 == this.m_head) {
  46.             this.m_head = var2.next;
  47.             var2.next.prev = null;
  48.          } else {
  49.             var2.prev.next = var2.next;
  50.             var2.next.prev = var2.prev;
  51.          }
  52.  
  53.          this.m_nCount += -1;
  54.          return var3;
  55.       }
  56.    }
  57.  
  58.    public Object GetHead() {
  59.       return this.m_head == null ? null : this.m_head.data;
  60.    }
  61.  
  62.    public void AddHead(Object var1) {
  63.       Node var2 = new Node(var1);
  64.       if (this.m_head == null) {
  65.          var2.next = var2.prev = null;
  66.          this.m_head = this.m_tail = var2;
  67.       } else {
  68.          var2.prev = null;
  69.          var2.next = this.m_head;
  70.          this.m_head.prev = var2;
  71.          this.m_head = var2;
  72.       }
  73.  
  74.       ++this.m_nCount;
  75.    }
  76.  
  77.    public String toString() {
  78.       String var1 = "List contains " + this.m_nCount + " items: \n";
  79.  
  80.       for(Node var2 = this.m_head; var2 != null; var2 = var2.next) {
  81.          var1 = var1 + var2.toString();
  82.       }
  83.  
  84.       return var1;
  85.    }
  86.  
  87.    public Object Remove(Object var1) {
  88.       Position var2 = this.Find(var1);
  89.       if (var2 == null) {
  90.          return null;
  91.       } else {
  92.          return var2.element == null ? null : this.RemoveAt(var2);
  93.       }
  94.    }
  95.  
  96.    public Position FindNext(Object var1, Position var2) {
  97.       Node var3 = null;
  98.       if (var2 != null) {
  99.          var3 = (Node)var2.element;
  100.       }
  101.  
  102.       if (var3 == null) {
  103.          var3 = this.m_head;
  104.       }
  105.  
  106.       while(var3 != null && !var1.equals(var3.data)) {
  107.          var3 = var3.next;
  108.       }
  109.  
  110.       return new Position(var3);
  111.    }
  112.  
  113.    public Position GetTailPosition() {
  114.       return this.m_tail == null ? null : new Position(this.m_tail);
  115.    }
  116.  
  117.    public Object RemoveHead() {
  118.       if (this.m_head == null) {
  119.          return null;
  120.       } else {
  121.          Object var1 = this.m_head.data;
  122.          this.m_head = this.m_head.next;
  123.          if (this.m_head != null) {
  124.             this.m_head.prev = null;
  125.          } else {
  126.             this.m_tail = null;
  127.          }
  128.  
  129.          this.m_nCount += -1;
  130.          return var1;
  131.       }
  132.    }
  133.  
  134.    public void RemoveAll() {
  135.       while(this.m_nCount > 0) {
  136.          this.RemoveHead();
  137.       }
  138.  
  139.       this.m_nCount = 0;
  140.       this.m_head = this.m_tail = null;
  141.    }
  142.  
  143.    public boolean IsEmpty() {
  144.       return this.m_nCount == 0;
  145.    }
  146.  
  147.    public Position Find(Object var1) {
  148.       Node var2;
  149.       for(var2 = this.m_head; var2 != null && !var1.equals(var2.data); var2 = var2.next) {
  150.       }
  151.  
  152.       return var2 == null ? null : new Position(var2);
  153.    }
  154.  
  155.    public Object GetPrev(Position var1) {
  156.       if (var1.element == null) {
  157.          return null;
  158.       } else {
  159.          Object var2 = ((Node)var1.element).data;
  160.          var1.element = ((Node)var1.element).prev;
  161.          return var2;
  162.       }
  163.    }
  164.  
  165.    public Object GetNext(Position var1) {
  166.       if (var1.element == null) {
  167.          return null;
  168.       } else {
  169.          Object var2 = ((Node)var1.element).data;
  170.          var1.element = ((Node)var1.element).next;
  171.          return var2;
  172.       }
  173.    }
  174. }
  175.